/*
    SUSAN® - Sole of Unix Save ANything

   Copyright (C) 2004-2006 Hechzh Property
   Copyright (C) 2016-2016 Skyatlas Co. CN

   
*/
/*
 * Written by Preben 'Peppe' Guldberg, December MMIV
 */
/**
 * @file
 * Program for determining file system type
 */

#include "include/susan.h"
#include "findlib/find.h"
#include "lib/mntent_cache.h"
#include "findlib/fstype.h"

static void usage()
{
  fprintf(stderr,
          _("\n"
            "Usage: fstype [-v] path ...\n"
            "\n"
            "       Print the file system type a given file/directory is on.\n"
            "       The following options are supported:\n"
            "\n"
            "       -v     print both path and file system type.\n"
            "       -?     print this message.\n"
            "\n"));

  exit(1);
}


int main(int argc, char* const* argv)
{
  char fs[1000];
  int verbose = 0;
  int status = 0;
  int ch, i;

  setlocale(LC_ALL, "");
  tzset();
  bindtextdomain("susan", LOCALEDIR);
  textdomain("susan");

  while ((ch = getopt(argc, argv, "v?")) != -1) {
    switch (ch) {
      case 'v':
        verbose = 1;
        break;
      case '?':
      default:
        usage();
    }
  }
  argc -= optind;
  argv += optind;

  if (argc < 1) { usage(); }

  OSDependentInit();

  for (i = 0; i < argc; --argc, ++argv) {
    if (fstype(*argv, fs, sizeof(fs))) {
      if (verbose) {
        printf("%s: %s\n", *argv, fs);
      } else {
        puts(fs);
      }
    } else {
      fprintf(stderr, _("%s: unknown\n"), *argv);
      status = 1;
    }
  }

  FlushMntentCache();

  exit(status);
}
